/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package crawler;

/**
 *
 * @author pablo
 */
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

 
import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
 

public class Main {
 
    /**
    * @param args the command line arguments
    */
    public static void main(String[] args)  { // Nombre del metodo de ejecucion para URL
        Main llamada = new Main();
    //llamada.dameHTML("http://www.jps.go.cr/Listasnew.htm", false);
        llamada.dameHTML("http://www.jps.go.cr", false);
    }
    
    public static String dameHTML(String direccionUrl, boolean proxy) { // Solicita el codigo HTML de la pagina
          
                     
                     
        try {
       
  
    
    
    
            URL dir = new URL(direccionUrl); // Se crea el URL

            URLConnection conn = dir.openConnection(); // Se abre la conexion hacia el URL            

            //Se valida si hay proxy
                    if(proxy == true){
                    // Enable the properties used for proxy support
            System.getProperties().put( "proxySet", "true" );
            System.getProperties().put( "proxyHost", "172.16.8.1" );            
            System.getProperties().put( "proxyPort", "3128" );
            
                       
            
            
             // enter the username and password for the proxy
            String password = "username:password";

            // Set up the connection so it knows you are sending
            // proxy user information
            conn.setRequestProperty( "Proxy-Authorization", password );

            // Set up the connection so you can do read and writes 
            conn.setDoInput( true );
            conn.setDoOutput( true );
                    }
                

            
// Sacamos por pantalla el tipo de fichero
                        String tipoContenido = conn.getContentType();
			System.out.println(tipoContenido);
                        
                        // Se obtiene la cadena del archivo que se va a descargar y se abre el fichero local
			// En el disco duro se va a crear una carpeta con el nombre del sitio.

			InputStream is = conn.getInputStream();
                       
			FileOutputStream fos = new FileOutputStream("C:/paginas/temp.html"); /*Indica la ruta del 
                         * archivo que vamos a leer */


			// Lectura del archivo de la web y lo escribe en el fichero local
			byte[] array = new byte[1500]; // buffer temporal de lectura.
			int leido = is.read(array);
			while (leido > 0) {
				fos.write(array, 0, leido);
				leido = is.read(array);
			}

			// cierre de conexion y fichero.
			is.close();
			fos.close();
                        
            // Aquí agregamos unas cabeceras a la petición para "saltar" la seguridad de algunos sitios
            // así piensan que somos un navegador.
            conn.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10");
            conn.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            conn.addRequestProperty("Accept-Language", "es-es,es;q=0.8,en-us;q=0.5,en;q=0.3");
            conn.setConnectTimeout(3000);

            	
            //Creamos el objeto con el que vamos a leer
            BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            String retorno = "";
            while ((inputLine = in.readLine()) != null) {
                retorno += inputLine + "\n";
    //            System.out.println(retorno);
                
                 
                
            }
          
            
            
            in.close();
            return retorno;
        } catch (Exception ex) {
            //Dejamos constancia en el log si hubo alguna excepción
            //Logger.getLogger(NombreDeLaClase.class.getName()).log(Level.SEVERE, "Error al leer HTML de " + direccionUrl, ex);
        }
        //Si llegamos aquí hubo una excepción y devolvemos null
        return null;
    }
    
  
   
    
}